package com.foreknow.ComputerGame;

/**
 * 游戏类
 * 1.创建一个游戏类
 * 2.编写一个游戏类的初始化的方法 inital()
 * 3.编写游戏类的开始的游戏方法 startGame()
 *
 * 实现一局对战
 * 分别调用用户类和电脑类的出拳的方法showFirst(),接收返回值进行比较，给出胜负的结果
 *
 * 如何实现循环对战并得分
 */

import java.util.Scanner;

/**
 * 初始化属性
 */
public class Game {
    Person person;//用户类
    Computer computer;//电脑类
    int count;//对战的次数

        public void inital(){
            person = new Person();
            computer = new Computer();
            count = 0;
        }

        public void startGame(){
           inital();//调用初始化的方法
            System.out.println("-----------欢迎进入游戏-----------");
            System.out.println("----------猜拳开始---------");
            System.out.println("--------------------------");
            System.out.println("出拳的规则：1.剪刀  2.石头  3.布");
            System.out.println("请选择对方的角色（1.刘备  2.孙权  3.曹操）");
            Scanner input = new Scanner(System.in);
            int role = input.nextInt();
            if(role == 1){
                computer.name = "刘备";
            }else if (role == 2){
                computer.name = "孙权";
            }else if (role == 3){
                computer.name = "曹操";
            }
            System.out.println("请输入您的名字：");
            person.name = input.next();

            System.out.println("您选择了"+computer.name+"来对战");

            //开始游戏
            System.out.println("要开始游戏吗？（y/n）");
            String con = input.next();

            int perFirst;//用户出拳
            int comFirst;//电脑出拳
            while(con.equals("y")){
                perFirst=person.showFirst();
                comFirst=computer.shouwFirst();
                //需要根据返回值判断胜负
                if((perFirst==1 && comFirst==1) || (perFirst==2 && comFirst==2) || (perFirst==3 && comFirst==3)){
                    System.out.println("结果：平局");
                }else if((perFirst==1 && comFirst==3) || (perFirst==2 && comFirst==1) || (perFirst==3 && comFirst==2)){
                    System.out.println("结果：你赢了");//用户胜
                    person.score++;
                }else{
                    System.out.println("结果：你输了，大傻子！！！");//电脑胜
                    computer.score++;
                }
                count++;
                System.out.println("是否开始下一轮（y/n）：");
                con = input.next();
            }
            //显示结果
            showResult();
        }
/**
 * 显示比赛的结果
 */
    public void showResult(){
        System.out.println("---------------------");
        System.out.println(computer.name+"  VS  "+person.name);
        System.out.println("对战的次数"+count);

        if(person.score == computer.score){
            System.out.println("结果：平手");
        }else if(person.score>computer.score){
            System.out.println("结果：胜出");
        }else {
            System.out.println("结果：下次加油");
        }
//        int result = calcResult();//计算结果的方法
//        if(result==1){
//            System.out.println("结果：平手");
//        }else if(result ==2){
//            System.out.println("结果：胜出");
//        }else{
//            System.out.println("结果：下次加油");
//        }
        System.out.println("---------------------");
    }

    /**
     * 计算结果
     */
    public int calcResult(){
        if(person.score == computer.score){
            return 1;//平局
        }else if(person.score>computer.score){
            return 2;//用户胜
        }else {
            return 3;//电脑胜
        }
    }

}
